/* $Id: UtilityDelegate.java 
 * Copyright (C) 2011, TRAKHEES
 *  
 * Revision History
 *
 * Date  			Author 		    	Remarks
 * ---------------------------------------------------------------------------------
 *
 */
package ae.pcfc.etks.online.common.delegate;

import java.util.List;

import ae.pcfc.etks.online.common.vo.CityVO;
import ae.pcfc.etks.online.common.vo.ClientRoleVO;
import ae.pcfc.etks.online.common.vo.CountryVO;
import ae.pcfc.etks.online.common.vo.DepartmentVO;
import ae.pcfc.etks.online.common.vo.EmirateCityVO;
import ae.pcfc.etks.online.common.vo.EmirateVO;
import ae.pcfc.etks.online.common.vo.LicIssueAuthVO;
import ae.pcfc.etks.online.common.vo.LicTypeVO;
import ae.pcfc.etks.online.common.vo.NameTitleVO;
import ae.pcfc.etks.online.common.vo.VisaTypeVO;

public interface UtilityDelegate extends BaseDelegate {

	/**
	 * getCountryList Method to get the list of countries
	 * 
	 * @param locale
	 * @return List<CountryVO>
	 */
	/**
	 * getCountryList
	 * Method to get the list of countries
	 * @param locale
	 * @return
	 * List<CountryVO>
	 */
	public List<CountryVO> getCountryList(String locale);
	
	/**
	 * getCityListByCountryCode
	 * Method to find the active list of cities for a country
	 * @param countryCode
	 * @param locale
	 * @return
	 * List<CityVO>
	 */
	public List<CityVO> getCityListByCountryCode(String countryCode, String locale);
	
	/**
	 * getClientRoleList
	 * Method to find the list of active client roles based on the client category
	 * @param clientCategory String
	 * @param bHideDefault Used to hint whether to hide the default client roles or not
	 * @return
	 * List<ClientRoleVO>
	 */
	public List<ClientRoleVO> getClientRoleList(String clientCategory, boolean bHideDefault);
	
	/**
	 * getLicIssuingAuth
	 * Method to get the list of active license issuing authorities
	 * @return
	 * List<LicIssueAuthVO>
	 */
	public List<LicIssueAuthVO> getLicIssuingAuth();

	/**
	 * getLicType Method to get the list of active license types
	 * 
	 * @return List<LicTypeVO>
	 */
	/**
	 * getLicType
	 * Method to get the list of active license types 
	 * @return
	 * List<LicTypeVO>
	 */
	public List<LicTypeVO> getLicType();

	/**
	 * getNameTitle Method to get the list of active name titles
	 * 
	 * @return List<NameTitleVO>
	 */
	/**
	 * getNameTitle
	 * Method to get the list of active name titles
	 * @return
	 * List<NameTitleVO>
	 */
	public List<NameTitleVO> getNameTitle();

	/**
	 * getVisaType Method to get the list of active visa types
	 * 
	 * @return List<VisaTypeVO>
	 */
	/**
	 * getVisaType
	 * Method to get the list of active visa types
	 * @return
	 * List<VisaTypeVO>
	 */
	public List<VisaTypeVO> getVisaType();

	/**
	 * getDepartments Method to get all the departments
	 * 
	 * @return List<DepartmentVO>
	 */
	/**
	 * getDepartments
	 * Method to get all the departments
	 * @return
	 * List<DepartmentVO>
	 */
	public List<DepartmentVO> getDepartments();

	/**
	 * getUserSecurityRole Method to get the list of user security roles of an
	 * user (username)
	 * 
	 * @param userName
	 * @return List<String>
	 */
	/**
	 * getUserSecurityRole
	 * Method to get the list of user security roles of an user (username)
	 * @param userName
	 * @return
	 * List<String>
	 */
	public List<String> getUserSecurityRole(String userName);

	/**
	 * getAllLicIssuingAuth Method to fetch all license issuing authority
	 * irrespective of whether it is allowed in Client Registration or not
	 * 
	 * @return List<LicIssueAuthVO>
	 */
	public List<LicIssueAuthVO> getAllLicIssuingAuth();

	public List<EmirateVO> getEmirates(String locale);

	public List<EmirateCityVO> getEmirateCityByEmirateCode(String emirateCode,
			String locale);
}
